import wepy from 'wepy'
export default class extends wepy.mixin {
    data = {
        query: '',
        cid: '',
        pagenum: 1,
        pagesize: 10,
        goodsList: [],
        total: 0,
        // 到底 的盒子 默认为隐藏
        isHidden: true,
        // 判断是否正在加载 默认不在加载
        isloading: false
    }

    methods = {
        // 点击列表去往商品详情页
        goGoodsDetail(id){
            wepy.navigateTo({
                url:'/pages/goods_detail/main?goods_id='+id
            })
        }
    }
    onLoad(val) {
        console.log(val)
        // 有时候是通过参数query进入 有时候是通过参数cid进入
        this.query = val.query || ''
        this.cid = val.cid || ''
        // 准备好了参数之后发送请求
        this.getGoodsList()
    }

    async getGoodsList(cb) {
        // 先设为正在加载
        this.isloading = true
        var { data: res } = await wepy.get('/goods/search', {
            query: this.query,
            cid: this.cid,
            pagenum: this.pagenum,
            pagesize: this.pagesize
        })
        if (res.meta.status !== 200) {
            return wepy.baseToast()
        }
        this.goodsList = [...this.goodsList, ...res.message.goods]
        this.total = res.message.total
        // 加载完毕 isloading设为false
        this.isloading = false
        // 2.stopPullDownRefresh如果直接放在这里 那就不是拉下刷新触发的此函数也要执行stop 浪费
        // 3.通过传递一个回调函数 只有下拉刷新时才传递该函数
        // 如果cb存在 说明是通过下拉刷新触发的，所以调用这个回调函数

        cb && cb()
        this.$apply()

    }

    // 下拉触底刷新
    onReachBottom() {
        // 如果正在加载  就return
        if (this.isloading) {
            return console.log('正在加载数据中')
        }
        // r如果已经没有数据了 就不能刷新（防止无用的刷新）
        if (this.pagenum * this.pagesize >= this.total) {
            return this.isHidden = false
        }
        console.log('触底了')
        // 触底了继续加载 但继续获得的数据要添加到goodsList中 而不是覆盖
        this.pagenum++
        this.getGoodsList()
    }

    // 下拉刷新
    onPullDownRefresh(){
        this.pagenum = 1
        this.goodsList = []
        this.isHidden = true,
        this.isloading = false
        this.getGoodsList(function(){
            wepy.stopPullDownRefresh()
        })
        // 触发下拉刷新有一个在什么地方停止的问题 三个方案 
        // 1.如果在下面直接stop， 由于getGoodsList是异步 
        // 会发生还没获取到数据 就停止刷新
        // wepy.stopPullDownRefresh()

    }
}